package wlbc;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/*
DatagramSocket()	创建数据报套接字并将其绑定到本机地址上的任何可用端口
DatagramPacket(byte[] buf,int len,InetAddress add,int port)	创建数据包,发送长度为len的数据包到指定主机的指定端口
 */
public class demo3 {
    public static void main(String[] args) throws IOException {
        //接受数据
        //1.创建DatagramSocket对象（快递公司）
        //细节： 在接受数据的时候，一定要绑定端口，否则数据无法接受
        //而且绑定的端口，一定要与发送的端口一致
        //	创建数据报套接字并将其绑定到本机地址上的任何可用端口
        DatagramSocket ds = new DatagramSocket(10086);
        //2.接收数据包
        byte[] buf = new byte[1024];
        DatagramPacket dp=new DatagramPacket(buf,buf.length);
        //该方法是阻塞的
        //程序执行到这一步的时候，会在这里死等
        //等发送端发送消息
        System.out.println(11111);
        ds.receive(dp);
        System.out.println(2222);
        //3.解析数据
        byte[] data = dp.getData();
        int len = dp.getLength();
        InetAddress address = dp.getAddress();
        int port = dp.getPort();
        System.out.println("接收到数据" + new String(data,0,len));
        System.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口发出的");

        //4.释放资源
        ds.close();
    }
}
